package com.sxy.controller.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.sql.SQLIntegrityConstraintViolationException;

/**
 * @author 宋鑫宇
 * @version 1.0
 * 全局异常捕获处理
 */
@Slf4j
@RestControllerAdvice(annotations = {RestController.class, Controller.class})
public class GlobalExceptionHandler {

    /**
     * 异常处理方法
     *
     * @return
     */
    @ExceptionHandler({SQLIntegrityConstraintViolationException.class})
    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException e) {
        log.error(e.getMessage());
        //截取异常字符串
        String[] split = e.getMessage().split(" ");
        if (e.getMessage().contains("Duplicate entry")) {
            String msg = split[2];
            return R.error(msg + "已存在");
        }
        return R.error("出现了未知错误,请稍后重试!");
    }

    /**
     * 自定义异常处理
     * @return
     */
    @ExceptionHandler({CustomException.class})
    public R<String> customExceptionHandler(CustomException e) {
        log.error(e.getMessage());

        return R.error(e.getMessage());
    }
//    @ExceptionHandler({Exception.class})
//    public R<String> doException(Exception e){
//        log.error(e.getMessage());
//        //记录日志
//        //发送消息给运维
//        //发邮件给开发人员
//        return R.error("系统繁忙，请稍后再试！");
//    }
}
